package com.bite.system.controller.user;


import com.bite.common.core.controller.BaseController;
import com.bite.common.core.domain.R;
import com.bite.common.core.domain.TableDataInfo;
import com.bite.system.domain.user.dto.UserGroupExamUpdateDTO;
import com.bite.system.domain.user.dto.*;
import com.bite.system.domain.user.vo.UserGroupDetailVO;
import com.bite.system.service.user.IUserGroupService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/user/group")
public class UserGroupController extends BaseController {
    @Autowired
    private IUserGroupService userGroupService;

    @GetMapping("/list")
    public TableDataInfo list(UserGroupQueryDTO userGroupQueryDTO) {
        startPage(userGroupQueryDTO);
        return getTableDataInfo(userGroupService.list(userGroupQueryDTO));
    }

    @GetMapping("/detail")
    public R<UserGroupDetailVO> detail(Long userGroupId) {
        return ok(userGroupService.detail(userGroupId));
    }

    @PostMapping("/add")
    public R<String> add(@RequestBody UserGroupAddDTO userGroupAddDTO) {
        return ok(userGroupService.add(userGroupAddDTO).toString());
    }

    @PutMapping("/edit")
    public R<Void> edit(@RequestBody UserGroupEditDTO userGroupAddDTO) {
        return toR(userGroupService.edit(userGroupAddDTO));
    }

    @DeleteMapping("/delete")
    public R<Void> delete(Long userGroupId) {
        return toR(userGroupService.delete(userGroupId));
    }

    @PutMapping("/user/update")
    public R<Void> userUpdate(@RequestBody UserGroupUserUpdateDTO userGroupAddDTO) {
        return toR(userGroupService.userUpdate(userGroupAddDTO));
    }

    @PostMapping("/exam/update")
    public R<Void> examUpdate(@RequestBody @Validated UserGroupExamUpdateDTO examUserGroupUpdateDTO) {
        return toR(userGroupService.examUpdate(examUserGroupUpdateDTO));
    }
}
